﻿
namespace TOPTECH.Labs.OpenClosed.Correct
{
    using Strategies;

    public class Person
    {
        /// <summary>
        /// Gets or sets the persons' gender.
        /// </summary>
        public Gender Gender { get; set; }

        /// <summary>
        /// Gets or sets the persons' status
        /// </summary>
        public Status Status { get; set; }

        /// <summary>
        /// Gets or sets the persons' agegroup
        /// </summary>
        public AgeGroup AgeGroup { get; set; }

        /// <summary>
        /// Gets or sets the persons' awareness
        /// </summary>
        public Awareness Awareness { get; set; }

        /// <summary>
        /// Gets or sets the persons' name
        /// </summary>
        public string Name { get; set; }

        public Person()
            : this("John")
        {
        }

        public Person(string name)
        {
            this.Name = name;
        }

        /// <summary>
        /// Returns a description of the person based on her
        /// properties.
        /// </summary>
        public override string ToString()
        {
            var result = "{0} is a " + this.Awareness + " " + this.Gender + " " + this.Status + " " + this.AgeGroup + ".";

            return string.Format(result, this.Name);
        }
    }
}
